iT邦幫忙

2021 iThome 鐵人賽

DAY 2
0
Mobile Development

麻瓜學習 iOS 開發系列 第 2

Day02:MVC、MVP、MVVM 淺談

  • 分享至 

  • xImage
  •  

前言

關於介紹 MVC、MVP、MVVM 的文章,
網絡上隨便搜索都可以找到超多。
MVC、MVP、MVVM 都是一種軟體結構模式,
我在這篇文章中會大致介紹 MVC、MVP、MVVM。

MVC

MVC 模式(Model-View–Controller)把軟體系統分為三個基本部分:模型(Model)、視圖(View)和控制器(Controller)。

  • Model 負責存儲、檢索、操縱來自數據庫或者網絡的數據
  • View 負責用戶界面
  • Controller 主要負責業務邏輯處理

Controller 是 Model 和 View 之間的連接器。
在 MVC 中,Controller 管理 View 的整個生命周期,Controller 持有 View、Model,Controller 和 View 之間不夠獨立,ViewController 最後需要處理很多事情,因此變得很厚重。
這也導致 Controller 測試困難,View 層的控制能力太弱,
同時也因為 Controller 處理所有的業務邏輯,獨立性強,所以當業務邏輯需要變更的時候,只需要動到 Controller 就好了。

鏈接附上:https://zh.wikipedia.org/zh-tw/MVC

MVP

MVP(Model-View-Presenter),是電腦軟體設計工程中一種對針對 MVC 模式,再審議後所延伸提出的一種軟體設計模式。

  • Model 負責存儲、檢索、操縱數據
  • View 處理用户界面
  • Presenter 是 View 與 Model 交互的中間樞紐,處理與用戶交互的邏輯

MVP 的產生是為了解決 MVC 中的 Controller 越來越大包以至於測試困難的問題。
在 MVP 中 View 管理 Presenter,Presenter 管理 Model,View 不能直接訪問 Model,
通過這樣,將 Presenter 真正獨立出來,所以測試的時候就可以獨立測試 Presenter 業務邏輯了。

鏈接附上:https://zh.wikipedia.org/wiki/MVC

MVVM

MVVM(Model–View–ViewModel)

  • Model 負責存儲、檢索、操縱數據
  • View 代表用户界面
  • ViewModel 負責業務邏輯,並且連接 View 和 Model
    viewmodel 可以連接到一個 View 或者多個 View。

在 MVVM 中,View 可以獨立於 Model,ViewModel 也可以連接到一個 view 或者多個 view 上,View、Model 之間的獨立性強,將業務邏輯與視圖獨立開來。
同時也能把一些視圖邏輯放在一個 ViewModel 里面,這可以讓很多 View 重複用這段視圖邏輯,可以減少寫重複的工作。
不過也因為 Model、View 的緊密聯繫、互相綁定,所以一旦出了bug,則很難判斷到底是 Model 還是 View 上出了問題。

鏈接附上:https://zh.wikipedia.org/zh-tw/MVVM

後記

這真的是淺談啦,
我在學習過程上主要是用 MVVM 進行開發的,
所以對 MVC、MVP 不太了解,
因此寫這篇文也是為了讓我更了解這三種結構模式。


上一篇
Day01:碎碎唸
下一篇
Day03:淺談 Git 和 GitHub
系列文
麻瓜學習 iOS 開發30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言